#include <bits/stdc++.h>
using namespace std;

// 定义气球结构体
struct Balloon {
    int x; // 气球的x坐标
    int h; // 气球的高度
};

// 比较函数，用于排序气球
bool compareBalloons(const Balloon& a, const Balloon& b) {
    if (a.x == b.x) return a.h < b.h;
    return a.x < b.x;
}

int main() {
    int n;
    scanf("%d", &n);

    vector<Balloon> balloons(n);
    vector<int> arrows(200005, 0); // 保存不同高度的箭的数量，最大高度为2n
    int totalArrows = 0;

    // 输入气球坐标
    for (int i = 0; i < n; i++) {
        scanf("%d%d", &balloons[i].x, &balloons[i].h);
    }

    // 按x坐标排序，x相同时按高度排序
    sort(balloons.begin(), balloons.end(), compareBalloons);

    // 处理每个气球
    for (const auto& balloon : balloons) {
        if (arrows[balloon.h] == 0) {
            // 如果当前高度无箭，就射一支新箭
            totalArrows++;
        } else {
            // 如果当前高度有箭，使用现有的箭
            arrows[balloon.h]--;
        }
        // 射完当前气球后，箭下降一个高度
        arrows[balloon.h - 1]++;
    }

    printf("%d\n", totalArrows);
    return 0;
}